package ltd.bugs.tool.signature.utils;

import java.util.Map;

/**
 * @author zhengzhq
 * @Title: ExtraUtils
 * @Description: 扩展信息工具类
 * @date 2018/8/9下午5:05
 */
public class ExtraUtils {

  /**
   * 获取扩展字段属性值
   *
   * @param extras 扩展信息
   * @param key    属性名称
   * @param classz 返回值类型
   * @param <T>    泛型，返回值类型
   */
  public static <T> T getAttributeValue(Map<String, Object> extras, String key, Class<T> classz) {
    if (extras == null || !extras.containsKey(key)) {
      return null;
    }

    return (T) extras.get(key);
  }

  /**
   * 获取扩展字段属性值
   *
   * @param extras       扩展信息
   * @param key          属性名称
   * @param classz       返回值类型
   * @param defaultValue 默认值，当extras中不存在时返回默认值
   * @param <T>          泛型，返回值类型
   */
  public static <T> T getAttributeValue(Map<String, Object> extras, String key, Class<T> classz,
                                        Object defaultValue) {
    T value = getAttributeValue(extras, key, classz);
    if (value == null) {
      value = (T) defaultValue;
    }

    return value;
  }
}
